package algorithm.ldk.SelectionSort;

/**
 * @作者：ldk
 * @email 2505496685@qq.com
 * @描述：默认描述
 * @创建时间：9:51 2021-01-04
 * @修改时间：9:51 2021-01-04
 * @修改描述：默认描述
 */

import java.util.Arrays;

/**
 * 插入排序法
 */
public class InsertionSort {

    private InsertionSort(){}


    public static <E extends Comparable<E>> void sort(E[] arr){

        for (int i = 0; i < arr.length; i++) {
            //将 arr[i] 插入到合适的位置
            E t = arr[i];
            int j;
            for (j = i; j - 1 >= 0 && t.compareTo(arr[j-1]) < 0; j --) {
                arr[j] = arr[j - 1];
            }
            arr[j] = t;
        }
        //{1,2,3,4,5,6} length:5
//        for (int i = arr.length - 1; i >= 0; i--) {
//            //将 arr[i] 插入到合适的位置
//            E t = arr[i];
//            int j;
//            for (j = i; j + 1 < arr.length && t.compareTo(arr[j+1]) > 0; j ++) {
//                arr[j] = arr[j + 1];
//            }
//            arr[j] = t;
//        }
    }

    public static boolean isOdd(int i){
        return i%2 == 1;
    }


    public static void main(String[] args){
        boolean odd = isOdd(1);
        boolean odd1 = isOdd(3);
        boolean odd2 = isOdd(5);
        boolean ood3 = isOdd(0);
        boolean ood4 = isOdd(-1);
        boolean ood5 = isOdd(-2);
        boolean ood6 = isOdd(-3);
        boolean ood7 = isOdd(-4);

        System.out.println(odd);
        System.out.println(odd1);
        System.out.println(odd2);
        System.out.println(ood3);
        System.out.println(ood4);
        System.out.println(ood5);
        System.out.println(ood6);
        System.out.println(ood7);

        //        int[] dataSize = {10000, 100000};
//        for (int n : dataSize) {
//
//            System.out.println("Random Array : ");
//            Integer[] arr = ArrayGenerator.generateRandomArray(n, n);
//            Integer[] arr2 = Arrays.copyOf(arr, arr.length);
//            SortingHelper.sortTest("InsertionSort",arr);
//            SortingHelper.sortTest("SelectionSort",arr2);
//            System.out.println("-----------------------------------------");
//
//            System.out.println("Order Array : ");
//            arr = ArrayGenerator.generateOrderedArray(n);
//            arr2 = Arrays.copyOf(arr, arr.length);
//            SortingHelper.sortTest("InsertionSort",arr);
//            SortingHelper.sortTest("SelectionSort",arr2);
//            System.out.println("-----------------------------------------");
//        }

//        int a;
//        a = 6;
//        System.out.print(a);
//        System.out.print(a++);
//        System.out.print(a);

    }


//    public static <E extends Comparable<E>> void sort(E[] arr){
//
//        for (int i = 0; i < arr.length; i++) {
//
//            //将 arr[i] 插入到合适的位置
//            //            for (int j = i; j - 1 >= 0; j--) {
//            //                if(arr[j].compareTo(arr[j-1]) < 0){
//            //                    swap(arr, j, j-1);
//            //                }else {
//            //                    break;
//            //                }
//            //            }
//
//            for (int j = i; j - 1 >= 0 && arr[j].compareTo(arr[j-1]) < 0; j --) {
//                swap(arr, j, j-1);
//            }
//        }
//    }

    //    private static <E> void swap(E[] arr, int i, int j) {
//        E t = arr[i];
//        arr[i] = arr[j];
//        arr[j] = t;
//    }
}
